package com.etime.shycourse.orde.services.interfaces;

import com.etime.shycourse.orde.dto.BuyCarIncludeGoodsDto;

import com.etime.shycourse.orde.pojo.Buycar;

import java.util.List;

/**
 * <p>
 * 购物车 服务类
 * </p>
 *
 * @author wb
 * @since 2022-01-12
 */
public interface BuycarServices {
    /**
     * 加入购物车数据
     * insetOrUpdateBuyCar
     *
     * @param buyCarList
     * @param token
     * @return 加入是购物车的id
     */
    int insetOrUpdateBuyCar(List<Buycar> buyCarList, String token);

    /**
     * 支招模块     * 加入购物车数据
     * insetOrUpdateBuyCar
     *
     * @param buyCarList
     * @param token
     * @return 加入是购物车的id
     */
    int insetSupportOrUpdateBuyCar(List<Buycar> buyCarList, String token);

    /**
     * 用于页面前端进行显示
     * 查询购物车数据接口 buycaruserid 用户id
     *
     * @param token
     * @return List<BuyCarIncludeGoodsDto> 购物车包括 课程信息 Dto
     */
    List<BuyCarIncludeGoodsDto> selectBuyCarIncludeGoodsByUserId(String token);

    /**
     * 用于页面前端进行显示 更新的 2022-03-02 12:04:20
     * 查询购物车数据接口 buycaruserid 用户id
     *
     * @param token
     * @return List<BuyCarIncludeGoodsDto> 购物车包括 课程信息 Dto
     */
    List<BuyCarIncludeGoodsDto> selectBuyCarIncludeGoodsByUserIds(String token);

    /**
     * deleteByUserId
     * 删除购物车中的信息 物理删除
     *
     * @param buyCarUserId 用户id
     * @return int 影响数据的条数 0 失败 1成功
     */
    int deleteByUserId(Integer buyCarUserId);

    /**
     * 根据购物车id 查询购物车一条数据 购物车的详细信息
     * 2022-02-14 10:30:53 修改为: 购物车的详细信息
     * selectBuyCarById
     *
     * @param buyCarId
     * @return Buycar
     */
    BuyCarIncludeGoodsDto selectBuyCarById(Integer buyCarId);

    /**
     * deleteByBuyCarId
     * 删除购物车中的信息 物理删除
     *
     * @param buyCarId 购物车id
     * @return int 影响数据的条数 0 失败 1成功
     */
    int deleteByBuyCarId(Integer buyCarId);
    //购物车下单数据接口

    /**
     * 根据购物车id 查询购物车 商品类型
     * odgoodstype说明：
     * 1--课程
     * 2--章
     * 3--节
     * 4--课时
     * selectBuyCarById
     *
     * @param buyCarId
     * @return odgoodstype 商品类型
     */
    Buycar selectOdGoodStyPeById(Integer buyCarId);


    /**
     * 根据购用户id 查询出购物车id 商品类型
     * odgoodstype说明：
     * 1--课程
     * 2--章
     * 3--节
     * 4--课时
     * selectBuyCarById
     *
     * @param UserId
     * @return Buycar中的 buycarid  odgoodstype
     */
    List<Buycar> selectOdGoodStyPeByUserId(Integer UserId);

    /**
     * 根据用户id 课程 判断是否加入购物车
     * <p></p>
     * 存在返回 1
     * 不存在返回 0
     *
     * @param courseID
     * @return Integer
     */
    Integer iFBuyCarCourse(Integer courseID, String token);


}
